#ifndef REPORTAR_H
#define REPORTAR_H
#include<fstream.h>
#include<iostream.h>
#include"tstring.h"
#include"iomanip.h"
#include"textlib.h"
class Reportar
{
private:
String fileName;
int numEntries;
public:
Reportar(String file);
void filesOp();
double totalIt( int As1, int As2 , int MidT , int Final);
String getGrade(double function);
};
Reportar::Reportar (String file):fileName(file)
{}
void Reportar::filesOp()
{
String fileIn,fileOut;
ifstream fin;
ofstream fout;
fileIn=fileName;
fileOut=fileIn+".out";
fin.open(fileIn.c_str(), ios::in|ios::nocreate);
fout.open(fileOut.c_str());
if(!fin)
{
cerr<<" Failed to Open "<<fileName<<endl;
exit(1);
}
else
{
cout<<endl;
cout<<" Input file : "<<fileIn<<" "<<endl;
cout<<" Output file : "<<fileOut<<" "<<endl;
for(int i=0;i<=4;i++)
{
for(int j=0;j<=i;j++)
{
cout<<" .";
}
}
cout<<endl;
cout<<endl;
}
fout<<" File's Name: "<<fileOut<<endl<<endl;
fout<<" ID\t "<<" A1\t"
<<"A2\t "<<" MT\t"<<"FE\t "<<"Total\t"<<"Grade"
<<endl;
fout<<"---------------------------------------------"<<endl;
fin>>numEntries;
String ID[40];
int A1[40],A2[40],MT[40],
FE[40];
double resTot;
double sumA1=0.0,sumA2=0.0,sumMT=0.0,
sumFE=0.0,sumTot=0.0;
int count=0;
while(count != numEntries)
{
fin>> ID[count]>>A1[count]>>A2[count]>>MT[count]
>>FE[count];
resTot=totalIt(A1[count],A2[count],MT[count],FE[count]);
fout<<ID[count]<<setw(6)<<A1[count]<<setw(6)<<A2[count]
<<setw(6)<<MT[count]<<setw(6)<<FE[count]
<<setreal(8,1)<<resTot
<<'\t'<<" "
<<getGrade(resTot)
<<endl;
sumA1+=A1[count];
sumA2+=A2[count];
sumMT+=MT[count];
sumFE+=FE[count];
sumTot+=resTot;
count++;
}
fout<<"---------------------------------------------"<<endl;
fout<<"Averages:"<<setreal(5,1)<<sumA1/numEntries
<<setreal(6,1)<<sumA2/numEntries<<setreal(6,1)
<<sumMT/numEntries<<setreal(6,1)<<sumFE/numEntries
<<setreal(6,1)<<sumTot/numEntries<<endl;
}
double Reportar::totalIt(int As1,int As2,int MidT,int Final)
{
double T;
T=(As1*(1.0/2.0))+(As2*(1.0/3.0))+
(MidT*(2.0/10.0))+(Final*(6.0/10.0));
return T;
}
String Reportar::getGrade(double function)
{
String GRADES[13]={"F",
"D-","D","D+",
"C-","C","C+",
"B-","B","B+",
"A-","A","A+"};
int i=0;
int mark= int (function);
if (mark<=46)
{
GRADES[i];
}
else
{
i=((mark-42)/4);
GRADES[i];
}
return GRADES[i];
}
#endif
|